home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / mac / LOGIC Apple II 5.25" Library - ProDOS / PRO018.dsk / GRUNGY.TOWERS.bas < prev    next >
BASIC Source File  |  2012-02-16  |  7KB  |  157 lines

  1. 100  REM    GRUNGY TOWERS
  2. 110  REM BY JIM BUTTERFIELD
  3. 120  REM ARCHITECT: JOHN STOUT
  4. 130  REM 
  5. 140 I =  RND( -TI)
  6. 150 DN$ = "": FOR I = 1 TO 10:DN$ = DN$ + CHR$(10): NEXT 
  7. 160  DEF  FN R(X) =  INT( RND(1) *X) +1
  8. 170  TEXT : HOME : PRINT  TAB( 14)"GRUNGY TOWERS": VTAB 5
  9. 180  PRINT " PR# A MURDER HAS BEEN COMMITTED AT THE"
  10. 190  PRINT "TOWERS.  YOUR JOB, SUPERINTENDENT, IS"
  11. 200  PRINT "TO FIND THE MURDERER.": PRINT : PRINT "CHECK THE ALIBIS CLOSELY:"
  12. 210  PRINT "THE KILLER IS SURE TO GIVE"
  13. 220  PRINT "HIMSELF AWAY. PR# "
  14. 230  PRINT "HINT: NOBODY EVER SUSPECTS THE REAL"
  15. 240  PRINT "MURDERER. PR# "
  16. 250  PRINT "PLAYING HINT: YOU MAY NAME ANY ROOM"
  17. 260  PRINT "OR PERSON WITH THREE OR MORE LETTERS,"
  18. 270  PRINT "E.G., 'LIV' FOR LIVING ROOM. PR#  PR#  PR# "
  19. 280  PRINT "PRESS ANY KEY TO START.";
  20. 290  DIM M$(25),R$(25),K$(4),Y$(6)
  21. 300  DATA  SHOT WITH A ANTIQUE PISTOL,STABBED WITH AN ORIENTAL DAGGER
  22. 310  DATA  STRANGLED BY A SILKEN SASH,CLUBBED WITH A BRASS CANDLESTICK
  23. 320  DATA  MANGLED BY A FALLEN CHANDELIER,SMOTHERED WITH AN ERMINE PILLOW
  24. 330  FOR I = 1 TO 6: READ Y$(I): NEXT I:Y% =  FN R(6)
  25. 340  DATA  SUPERINTENDENT,INSPECTOR,SERGEANT,CONSTABLE
  26. 350  FOR I = 1 TO 4: READ K$(I): NEXT I:K% = 1
  27. 360  FOR I = 1 TO 25: READ R$(I): NEXT 
  28. 370  DATA HALL,LIVING ROOM,KITCHEN,DINING ROOM,BILLIARD ROOM,DOWNSTAIRS LAV
  29. 380  DATA BATHROOM,MASTER BEDROOM,NURSERY
  30. 390  DATA SERVANT'S QUARTERS
  31. 400  DATA CONSERVATORY,TERRACE,STABLES,ATTICS,LAUNDRY,LIBRARY,MUSIC ROOM,STUDY
  32. 410  DATA BOILER ROOM,PANTRY,SCULLERY
  33. 420  DATA FIRST BEDROOM,SECOND BEDROOM,THIRD BEDROOM,FOURTH BEDROOM
  34. 430  FOR I = 1 TO 25:M$(I) = "": NEXT 
  35. 440 I = 1
  36. 450 J =  FN R(24) +1: IF M$(J) = ""  THEN  GOSUB 1500:I = J: GOTO 450
  37. 460  IF  PEEK( -16384) <128  THEN 460
  38. 470  POKE  -16368,0: HOME : GOSUB 1340
  39. 480  FOR I = 1 TO 25: IF M$(I) < >""  THEN  NEXT I: GOTO 510
  40. 490 J =  FN R(25): IF M$(J) = "" GOTO 490
  41. 500  GOSUB 1500: GOTO 480
  42. 510  DIM S(12),N$(12),C$(12),A$(12),B$(12)
  43. 520  GOSUB 1340: FOR I = 1 TO 12: READ N$(I),C$(I),A$(I),B$(I)
  44. 530  NEXT I
  45. 540  FOR I = 1 TO 25: IF  LEN(M$(I)) >1 GOTO 580
  46. 550  FOR J = I +1 TO 25: IF  LEN(M$(J)) >1 GOTO 570
  47. 560  GOSUB 1500
  48. 570  NEXT J
  49. 580  NEXT I
  50. 590  DATA  FUNGUS,BUTLER,"SIR, I'M AFRAID I KNOW NOTHING.",MOST REGRETTABLE.
  51. 600  DATA  MRS RAMSBOTTOM,COOK,"DON'T KNOW A THING, DEARIE.","ISN'T IT AWFUL?"
  52. 610  DATA  BLOGGS,GARDENER,"WELL,GUV,IT  BEATS ME.","IT'S A RUM GO"
  53. 620  DATA  FIFI,MAID,"EET EES SO SURPRISEENG!","HOW YOU SAY, SCARY.."
  54. 630  DATA  CHOLMONDELY,COLONEL,"BY JOVE!  AWKWARD BUSINESS, THIS.","BOTHER!"
  55. 640  DATA  LADY THROCKMORTON,DOWAGER,"DEAR ME..","IT'S VERY BAD MANNERED"
  56. 650  DATA RAGS,CHAUFFEUR,"DON'T KNOW NOTHING, SIR:","MAKES YOU THINK, DON'T IT?"
  57. 660  DATA  AGATHA FFORBES-SMYTHE,DEBUTANTE,GOODNESS!,"ISN'T IT JUST AWFUL?"
  58. 670  DATA  TINSEL,ACTRESS,"DON'T KNOW A THING, DARLING.","HOW DRAMATIC, THOUGH!"
  59. 680  DATA  MADAME BLINSKY,COUNTESS,"I SEE NODINK, MY DEAR.",IS VERY SINISTER
  60. 690  DATA  FRANK N STONE,DOCTOR,"BAD BUSINESS, THIS.","DON'T LIKE IT AT ALL"
  61. 700  DATA  PIGGY FANSHAW,TWIT,"I SAY, EXCITING, WHAT?","JOLLY BAD SHOW, OLD MAN"
  62. 710  DIM W(12),X(12)
  63. 720 R% =  FN R(24) +1
  64. 730  FOR I = 1 TO 12:W% =  FN R(25)
  65. 740 X% =  FN R(25): IF X% = R% GOTO 740
  66. 750 W(I) = W%:X(I) = X%: NEXT I
  67. 760  GOSUB 1340:M% =  FN R(12):X(M%) = 0:X = R%
  68. 770 G% =  FN R(3): ON G% GOTO 800,830
  69. 780  FOR I = 1 TO 11:X = X(I): FOR J = I +1 TO 12: IF X = X(J) GOTO 830
  70. 790  NEXT J,I
  71. 800 Z% = 1:X =  FN R(25): FOR I = 1 TO 12: IF X(I) = X GOTO 830
  72. 810  NEXT I
  73. 820 Z% =  FN R(12): IF M% = Z% GOTO 820
  74. 830 X(M%) =  -X: GOSUB 1340: FOR I = 1 TO 12
  75. 840 S(I) =  FN R(12): NEXT I
  76. 850  GOSUB 1420:R = 1: HOME 
  77. 860  PRINT  "YOU ARE IN THE ";R$(R)
  78. 870  PRINT : FOR I = 1 TO 12: IF W(I) < >R GOTO 1040
  79. 880  PRINT N$(I);",THE ";C$(I);", IS HERE."
  80. 890  PRINT "THE ";C$(I);" SAYS:  '";
  81. 900 Z$ = A$(I): GOSUB 1610:Z$ = "  I WAS IN THE ": GOSUB 1610
  82. 910 X =  ABS(X(I)):Z$ = R$(X): GOSUB 1610:Z$ = " AT THE TIME ": GOSUB 1610
  83. 920  IF I = M%  AND Z% = 0 GOTO 980
  84. 930 W$ = "WITH THE ":F = 0: FOR J = 1 TO 12: IF I = J GOTO 950
  85. 940  IF X = X(J)  THEN Z$ = W$: GOSUB 1610:Z$ = C$(J): GOSUB 1610:W$ = " AND THE ":F = 1
  86. 950  NEXT J
  87. 960  IF F >0 GOTO 990
  88. 970  IF I = M%  AND Z% >0  THEN Z$ = W$: GOSUB 1610:Z$ = C$(Z%): GOSUB 1610: GOTO 990
  89. 980 Z$ = "BY MYSELF": GOSUB 1610
  90. 990 Z$ = ".  ": GOSUB 1610
  91. 1000 S% = S(I): IF S% = M%  THEN Z$ = "MAYBE IT WAS SUICIDE": GOSUB 1610: GOTO 1030
  92. 1010  IF  ABS(X(S%)) = X  THEN Z$ = "I DUNNO WHO COULD HAVE DONE IT": GOSUB 1610: GOTO 1030
  93. 1020 Z$ = "I SUSPECT THE ": GOSUB 1610:Z$ = C$(S%): GOSUB 1610
  94. 1030 Z$ = ".  ": GOSUB 1610:Z$ = B$(I): GOSUB 1610: PRINT ".'": PRINT : FOR J = 1 TO 2E3: NEXT 
  95. 1040  NEXT I
  96. 1050  IF R% < >R GOTO 1090
  97. 1060  PRINT "THERE IS A DEAD BODY HERE"
  98. 1070  PRINT  Y$(Y%);"."
  99. 1080  PRINT "THE BODY SAYS: NOTHING": PRINT 
  100. 1090 M$ = M$(R)
  101. 1100  PRINT "YOU MAY ";: INVERSE : PRINT "ACCUSE";: NORMAL : PRINT ", OR PROCEED TO:"
  102. 1110  FOR I = 1 TO  LEN(M$):J =  ASC( MID$ (M$,I)) -64: PRINT  TAB( 12)R$(J): NEXT I: PRINT 
  103. 1120  INPUT "YOUR MOVE ... ";X$
  104. 1130  IF   LEN(X$) <3 GOTO 1120
  105. 1140 X$ =  LEFT$(X$,3): IF X$ = "ACC" GOTO 1180
  106. 1150  FOR I = 1 TO  LEN(M$):J =  ASC( MID$ (M$,I)) -64
  107. 1160  IF  LEFT$(R$(J),3) = X$  THEN R = J: GOTO 860
  108. 1170  NEXT I: GOTO 1120
  109. 1180  PRINT "VERY WELL, ";K$(K%): PRINT " YOU ACCUSE THE...";
  110. 1190  INPUT A$: IF A$ = "" GOTO 1100
  111. 1200 A$ =  LEFT$(A$,3): FOR I = 1 TO 12: IF A$ =  LEFT$(C$(I),3) GOTO 1210
  112. 1203  NEXT : PRINT : PRINT " YOU DID NOT SPECIFY A SUSPECT!": PRINT : GOTO 1100
  113. 1210  IF I = M% GOTO 1260
  114. 1220  PRINT "BUNGLER!  IT'S NOT THE ";C$(I);"!"
  115. 1230 K% = K% +1: IF K% >4 GOTO 1280
  116. 1240  PRINT "YOU ARE DEMOTED TO ";K$(K%);"!"
  117. 1250  PRINT "GO BACK AND TRY TO GET THE RIGHT ONE!": GOTO 1100
  118. 1260  INVERSE : PRINT "RIGHT!";: NORMAL : PRINT " ANOTHER CRIMINAL SPEEDILY"
  119. 1270  PRINT "BROUGHT TO JUSTICE!": GOTO 1310
  120. 1280  PRINT "THANKS TO YOU, THE MURDERER (IN FACT,"
  121. 1290  PRINT "THE ";C$(M%);") GOT AWAY."
  122. 1300  PRINT "YOU'RE DISMISSED FROM THE FORCE!"
  123. 1310  PRINT : INPUT "WANT TO TRY AGAIN? ";Z$
  124. 1320 Z$ =  LEFT$(Z$,1): IF Z$ = "Y"  OR Z$ = "y"  THEN  RUN 
  125. 1330  PRINT  CHR$(4)"-STARTUP"
  126. 1340 N = 1 + INT(( RND(1) *30))
  127. 1350 L =  FN R(5) *2 +1
  128. 1360  VTAB L
  129. 1370  GOSUB 1510
  130. 1380  FOR I = L +9 TO 20
  131. 1390  IF I >15  AND I <19  THEN  HTAB N +1: PRINT "[  ]": GOTO 1410
  132. 1400  HTAB N +1: PRINT "[__]"
  133. 1410  NEXT : RETURN 
  134. 1420  FOR J = 0 TO 15 + RND(1) *8: GOSUB 1340: NEXT J
  135. 1430  VTAB 16
  136. 1440  HTAB N +1: PRINT "/*\"
  137. 1450  FOR I1 = 1 TO 4: HTAB N +1: PRINT "[";: FLASH : PRINT " ";: NORMAL : PRINT "]": NEXT 
  138. 1460  VTAB 23: PRINT "WELCOME TO GRUNGY TOWERS!"
  139. 1470  PRINT "HIT ANY KEY TO START THE GAME.";
  140. 1480  IF  PEEK( -16384) <128  THEN 1480
  141. 1490  POKE  -16368,0: RETURN 
  142. 1500 M$(J) = M$(J) + CHR$(I +64):M$(I) = M$(I) + CHR$(J +64): RETURN 
  143. 1510  HTAB N +2: PRINT "()"
  144. 1520  HTAB N +2: PRINT "/\"
  145. 1530  HTAB N +1: PRINT "/  \"
  146. 1540  HTAB N: PRINT "/____\"
  147. 1550  HTAB N +1: PRINT "[  ]"
  148. 1560  HTAB N +1: PRINT "[";: INVERSE : PRINT " ";: NORMAL : PRINT " ]"
  149. 1570  HTAB N +1: PRINT "[ ";: INVERSE : PRINT " ";: NORMAL : PRINT "]"
  150. 1580  HTAB N +1: PRINT "[";: INVERSE : PRINT " ";: NORMAL : PRINT " ]"
  151. 1590  HTAB N +1: PRINT "[ ";: INVERSE : PRINT " ";: NORMAL : PRINT "]"
  152. 1600  RETURN 
  153. 1610 Z = 39 - POS(0): IF  LEN(Z$) < = Z  THEN  PRINT Z$;: RETURN 
  154. 1620  IF Z <2  THEN  PRINT : GOTO 1610
  155. 1630  FOR Z1 = Z TO 1  STEP  -1: IF  MID$ (Z$,Z1,1) < >" "  THEN  NEXT Z1
  156. 1640  IF Z1 = 0  THEN  PRINT : GOTO 1610
  157. 1650  PRINT  LEFT$(Z$,Z1): PRINT  MID$ (Z$,Z1 +1);: RETURN